Networks enable computers and other devices to exchange data such as e-mail messages, web pages, audio, video, and so forth. To send data across a network, a sending device typically constructs a collection of packets. In networks, individual packets store some portion of the data being sent. A receiver can reassemble the data into its original form after receiving the packets.
A packet traveling across a network may make many “hops” to intermediate network devices before reaching its final destination. A packet includes data being sent and information used to deliver the packet. This information is often stored in the packet's “payload” and “header(s)”, respectively. The header(s) may include information for a number of different communication protocols that define the information that should be stored in a packet. Different protocols may operate at different layers. For example, a low level layer generally known as the “link layer” coordinates transmission of data over physical connections. A higher level layer generally known as the “network layer” handles routing, switching, and other tasks that determine how to move a packet forward through a network.
Many different hardware and software schemes have been developed to handle packets. For example, some designs use software to program a general purpose CPU (Central Processing Unit) processor to process packets. Other designs use components such as ASICs (application-specific integrated circuits), feature dedicated, “hard-wired” approaches. Field programmable processors enable software programmers to quickly reprogram network processor operations.